﻿#include <stdio.h>

//putchar 函数
//int main()
//{
//	char ch;
//	while ((ch =getchar()) != '#')
//	{
//		putchar(ch);
//	}
//
//		return 0;
//}
//

//while ((ch = getchar()) != EOF);文件结尾处办法

//int main()
//
//{
//
//	int guess = 1;
//	while (getchar() != 'y')
//	{
//		printf("well,then,is it %d?\n", guess);
//		while(getchar() != '\n');//只读取第一个字符，清空缓存区
//		continue;//多余但不碍事
//	}
//
//	printf("sfasdaf");
//	return 0;
//}
//每次输入n是程序为什么会打印两次？？？每次会多一句的原因是因为缓冲输入的换行符，之前为什么没出现是因为一直使用scanf函数，而不是getchar（
//函数//因为在按住enter的时候会输入换行符\n

//#include <stdio.h>
//
//int main() {
//    int count = 0;
//    int ch;
//
//    while ((ch = getchar()) != EOF)
//    {
//        if (ch != '\n')  // 不统计换行符
//            count++;
//    }
//
//    printf("%d", count);
//    return 0;
//}
//#include <stdio.h>
//#include <string.h>
//
//int main() {
//    char buf[1024];
//    int count = 0;
//
//    while (1) {
//        if (!fgets(buf, sizeof(buf), stdin))
//            break;  // 正常情况下不会发生
//
//        // 如果是空行（只有 '\n'）
//        if (strcmp(buf, "\n") == 0)
//            break;
//
//        // 统计这一行的非换行符
//        for (int i = 0; buf[i] != '\0'; i++) {
//            if (buf[i] != '\n')
//                count++;
//        }
//    }
//
//    printf("%d\n", count);
//    return 0;
//}

//int main()
//{
//	char ch;
//	int cou_big = 0, cou_sma = 0, cou = 0;
//	while ((ch = getchar()) != EOF)
//	{
		//if (ch >= 'A' && ch <= 'Z')
		//	cou_big++;
		//else if (ch >= 'a' && ch <= 'z')
		//	cou_sma++;
		//else if(ch != '\n')
		//	cou++;

//	}
//	printf("%d %d %d", cou_big, cou_sma, cou);
//
//	return 0;
//}
#include <string.h>
#include <ctype.h>
//int main()
//{
//	char ch;
//	int average;
//	int count = 0;//单词数量
//	int  cou = 0;
//
//	while ((ch = getchar()) != EOF)
//	{
//		if (isalpha(ch))
//			count++;
//		else if (ch != '\n')
//			cou++;
//	}
//	printf("%d", count);
//	
//	 average = count / cou ;
//	printf("%d", average);
//	return 0;
//}

//#include <stdio.h>
//#include <ctype.h>
//
//int main()
//{
//    int ch;
//    int total_letters = 0;   // 总字母数
//    int word_count = 0;      // 单词数
//    int word_letters = 0;    // 当前单词字母数，，，，，你是灵魂
//
//    while ((ch = getchar()) != EOF)
//    {
//        if (isalpha(ch))
//        {
//            word_letters++;
//        }
//        else if (ch == ',' || ch == '.')
//        {
//            continue;
//        }
//        else if (ch == ' ' || ch == '\n' || ch == '\t') {
//            // 遇到空格/换行/制表符，表示单词结束
//            if (word_letters > 0) 
//            {
//                total_letters += word_letters;
//                word_count++;
//                word_letters = 0;  // 重置当前单词计数
//            }
//        }
//        // 其它字符忽略
//    }
//
//    // 文件末尾可能最后一个单词没有空格，需要单独处理
//    if (word_letters > 0) 
//    {
//        total_letters += word_letters;
//        word_count++;
//    }
//
//    if (word_count == 0)
//    {
//        printf("0\n"); // 防止除以0
//    }
//    else
//    {
//        printf("%d\n", total_letters / word_count);
//    }
//
//    return 0;
//}

//#include <stdio.h>
//#include <ctype.h>
//
//int main() {
//    int ch;
//    int total_letters = 0;  // 总字母数
//    int word_count = 0;     // 单词数
//    int word_letters = 0;   // 当前单词字母数
//
//    while ((ch = getchar()) != EOF) {
//        if (isalpha(ch)) {
//            // 当前字符是字母
//            word_letters++;
//        }
//        else if (ch == ',' || ch == '.') {
//            // 标点符号：触发单词结束，但不计入字母数
//            if (word_letters > 0) {
//                total_letters += word_letters;
//                word_count++;
//                word_letters = 0;
//            }
//        }
//        else if (ch == ' ' || ch == '\n' || ch == '\t') {
//            // 空格/换行/制表符：触发单词结束
//            if (word_letters > 0) {
//                total_letters += word_letters;
//                word_count++;
//                word_letters = 0;
//            }
//        }
//        // 其他字符忽略
//    }
//
//    // 文件末尾最后一个单词可能没有空格或标点
//    if (word_letters > 0) {
//        total_letters += word_letters;
//        word_count++;
//    }
//
//    if (word_count == 0) {
//        printf("0\n");
//    }
//    else {
//        printf("%d\n", total_letters / word_count);  // 整数平均
//    }
//
//    return 0;
//}
//
//int main()
//{
//    char ch;
//    int zong;
//    int current;
//    int count;
//    while ((ch = getchar()) != EOF)
//    {
//        if (isalpha(ch))
//        {
//            currtent++;
//        }
//        else if (ch == ',' || ch == '.')
//        {
//            if (current > 0)
//            {
//                zong += currrnt;
//                count++
//                    current = 0;
//            }
//            else if (ch == '\n' || ch == ' ' || ch == '\t')
//            {
//                if (current > 0)
//                {
//                    zong += currrnt;
//                    count++
//                        current = 0;
//                }
//
//            }
//       
//         }
//        if (current > 0)
//        {
//
//        }
//    }
//
//
//
//    return 0;
//}
//
//判断空白字符（包括空格、换行符、制表符）
//
//使用：
//
//isspace(c)

//ispunct() → 只判断标点符号
//
//isspace() → 判断空白字符（包括 空格、换行、制表符）
//
//isalpha() → 字母
//
//isdigit() → 数字

#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
//
//void get_first(void)
//{
//    char ch[100];
//
//    while (fgets(ch, sizeof(ch), stdin) != NULL)//key word！！！
//    {
//        for (int i = 0; ch[i] != '\0'; i++)
//        {
//            if (!isspace((unsigned char)ch[i]))   // 找到第一个非空白字符
//            {
//                printf("%c\n", ch[i]);
//                break;
//            }
//        }
//    }
//}
//
//int main()
//{
//
//	get_first();
//
//	return 0;
//}


//
//double  add(double x,double y)
//{
//	return(x + y);
//}
//double sub(double x, double y)
//{
//	return (x - y);
//}
//double  mul(double x, double y)
//{
//	return (x * y);
//}
//double dec(double x, double y)
//{
//		return (x / y);
//
//}
//char get_first(void)
//{
//    char ch[100];
//        if (fgets(ch, sizeof(ch), stdin) == NULL)
//            return 'q';
//        for (int i = 0; ch[i] != '\0'; i++)
//        {
//            if (!isspace((unsigned char)ch[i]))   // 找到第一个非空白字符
//            {
//         
//				return tolower(ch[i]);
//								
//            }
//        }
//    
//    return '\0';
//}
//
//void clear_input()
//{
//    int c;
//    while ((c = getchar()) != '\n' && c != EOF);
//}
//
//int main()
//{
//	
//	double  x, y;
//	char ch;
//	while ( (ch = get_first() ) != 'q')
//	{
//
//
//        if (ch != 'a' && ch != 's' && ch != 'm' && ch != 'd')
//        {
//            printf("invalid\n");
//            continue;
//        }
//        if (scanf("%lf %lf", &x, &y) != 2)
//        {
//            printf("invalid\n");
//            clear_input();
//            continue;
//        }
//        clear_input();
//        double answer;
//			switch (ch)
//			{
//			case 'a':
//				answer = add(x, y);
//				printf("%.2lf", answer);
//				break;
//			case's':
//				 answer = sub(x,y);
//				 printf("%.2lf", answer);
//				break;
//			case 'm':
//			     answer = mul(x, y);
//				printf("%.2lf", answer);
//				break;
//			case 'd':
//				if (y != 0)
//				{
//				 answer = dec(x, y);
//				printf("%.2lf", answer);
//				}
//				else
//				{
//					printf("invalid\n");
//				}
//				break;
//			default:
//				printf("invalid\n");
//				break;
//
//			}
//
//		}
//		else
//		{
//			printf("invalid\n");
//		}
//
//	}
//
//	return 0;
//}

#include <stdio.h>
#include <ctype.h>
#include <string.h>

double add(double x,double y){ return x + y; }
double sub(double x,double y){ return x - y; }
double mul(double x,double y){ return x * y; }
double dec(double x,double y){ return x / y; }

char get_first(void)
{
    char ch[100];

    if (fgets(ch, sizeof(ch), stdin) == NULL)
        return 'q';   // 保险措施

    for (int i = 0; ch[i] != '\0'; i++)
    {
        if (!isspace((unsigned char)ch[i]))   // 找到第一个非空白字符
        {
            return tolower(ch[i]);           // 统一转成小写
        }
    }

    return '\0';   // 若全是空白字符
}

void clear_input()
{
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}

int main()
{
    double x, y;
    char ch;

    while ((ch = get_first()) != 'q')
    {
        if (ch!='a' && ch!='s' && ch!='m' && ch!='d')
        {
            printf("invalid\n");
            continue;
        }

        if (scanf("%lf %lf", &x, &y) != 2)
        {
            printf("invalid\n");
            clear_input();
            continue;
        }
        clear_input();

        switch (ch)
        {
            case 'a':
                printf("%.2lf\n", add(x, y));
                break;

            case 's':
                printf("%.2lf\n", sub(x, y));
                break;

            case 'm':
                printf("%.2lf\n", mul(x, y));
                break;

            case 'd':
                if (y == 0)
                    printf("invalid\n");
                else
                    printf("%.2lf\n", dec(x, y));
                break;
        }
    }

    return 0;
}
